home *** CD-ROM | disk | FTP | other *** search
- INCLUDE "Blitz.i"
- INCLUDE "lib/exec.i"
- INCLUDE "lib/dos.i"
-
- libheader 195,0,0,Exit,LibErrs
-
- afunction word
- args
- libs doslib,la6
- subs _CtrlC,0,0
- name "CtrlC"," - Returns True if a CTRL/C has been received"
-
- afunction long
- args long
- libs execlib,la6
- subs _New,0,0
-
- args long,long
- libs execlib,la6
- subs _New_a,0,0
- name "New","(Size[,Type]) - Allocates Memory"
-
- astatement
- args long
- libs execlib,la6
- subs _Dispose,0,0
- name "Dispose","(Addr) - Deallocates previously allocated memory"
-
- acommand word
- args
- libs execlib,la0
- subs _KickVersion,0,0
-
- args word
- libs execlib,la0
- subs _KickVersion_a,0,0
- name "KickVersion","[(Ver)] - Used to Check/Get Kickstart version."
-
- afunction long
- args
- libs execlib,ld0
- subs _execbase,0,0
- name "execbase","- Returns pointer to Exec library base."
-
- Exit: nullsub LibExit,0,0, execlib,la6
-
- libfin
-
- ****************************************************************************************
-
- _New:
- MOVE.L #$10000,d1 ; d1 := #MEMF_CLEAR
- _New_a:
- ADDQ.L #8,d0 ; d0 := Size + 8
- MOVE.L d0,d2 ; d2 := d0
- Call AllocMem
- TST.L d0
- BEQ.B 1$ ; AllocMem() failed
- MOVEA.L d0,a0 ; a0 := MemPtr
- MOVE.L d2,4(a0) ; Save Size
- MOVE.L __MemEntry(pc),(a0)
- MOVE.L d0,__MemEntry ; Save last allocated in d0
- ADDQ.L #8,d0 ; d0 := MemPtr + 8
- 1$ RTS
-
- _Dispose:
- TST.L d0
- BEQ.B 2$ ; Nothing to Dispose
- SUBQ.L #8,d0 ; d0 := Real MemPtr
- LEA __MemEntry(pc),a1 ; a1 := MemList
- 1$ MOVE.L (a1),d1 ; d1 := Ptr to last MemChunk allocated
- BEQ.B 2$ ; NULL when no memory have been allocated yet
- MOVEA.L a1,a2 ; a2 := MemList
- MOVEA.L d1,a1 ; a1 := Ptr to last MemChunk allocated
- CMP.L d1,d0 ; is Arg Ptr to last MemSize allocated ?
- BNE.B 1$ ; No : Arg <> Ptr to...
- MOVE.L 4(a1),d0 ; d0 := MemSize
- MOVE.L (a1),(a2) ; Save Next MemChunk in MemList
- Call FreeMem
- 2$ RTS
-
- _CtrlC:
- MOVE.L #$1000,d1
- Call CheckSignal
- RTS
-
- _KickVersion:
- MOVE.W 20(a0),d0
- RTS
- _KickVersion_a:
- CMP.W 20(a0),d0
- BGE Oops
- MOVEQ #-1,d0
- _execbase:
- RTS
-
- Oops:
- MOVEQ #0,d0
- RTS
-
- LibExit:
- MOVEA.L __MemEntry(pc),a2
- MOVE.L a2,d0
- BEQ.B 2$ ; No MemList
- 1$ MOVEA.L a2,a1 ; a1 := MemPtr
- MOVE.L 4(a2),d0 ; d0 := MemSize
- MOVEA.L (a2),a2 ; a2 := Next MemChunk
- Call FreeMem ; (a1/d0)
- MOVE.L a2,d0 ; d0 := Next MemChunk
- BNE.B 1$ ; d0 <> NULL
- 2$ RTS
-
- __MemEntry
- Dc.l 0
-
- LibErrs:
- Dc.b "$VER: Lotan's System Library 0.12 (17-04-99),0
- Even
-